#pragma once

#include<iostream>
#include<string>
#include<sys/types.h>
#include<sys/socket.h>

//一些工具接口
class Util
{
public:
    static int ReadLine(int sock,std::string& out)
    {
        char c='X';
        //不同平台结束符不同 '\r' '\r\n' '\n'
        while(c!='\n')
        {
            ssize_t s=recv(sock,&c,1,0);
            if(s>0)
            {
                if(c=='\r')//探测后一个字符
                {
                    ssize_t ss=recv(sock,&c,1,MSG_PEEK);
                    if(ss>0&&c=='\n')
                        recv(sock,&c,1,0);//取出
                    else
                        c='\n';
                }
                if(c!='\n')
                    out.push_back(c);
            }
            else if(s==0)
                return 0;
            else
                return -1;
        }
        return out.size();
    }
    static bool CutStr(const std::string& targe,std::string& key,std::string& value,const std::string sep)
    {
        auto pos=targe.find(sep);
        if(pos!=std::string::npos)
        {
            key=targe.substr(0,pos);
            value=targe.substr(pos+sep.size());
            return true;
        }
        return false;
    }
};
